This invention relates to a system for detecting the absolute position of each of a plurality of operating axes by servo-controlling a servomotor and, more particularly, to an absolute position detecting system for a servocontrol system which is operative to detect the absolute positions of the operating axes on the basis of the respective detected outputs of resolvers and absolute encoders made rotatable at a predetermined speed ratio together with the servomotor, so that the detections of those absolute positions can be selectively performed for the respective operating axes.
In order to position a moving part of an industrial robot or the like with a high degree of accuracy, servomotors subject to servocontrol are widely used.
FIG. 1 is a block circuit diagram for explaining servocontrol, showing an example in which the operating axes of an industrial robot or the like are positionally controlled by an NC (numerical control) apparatus. In FIG. 1: reference numeral 101 indicates a paper tape which is punched with numeral control (NC) command data such as positioning information for machining or M, S, T function information; and numeral 102 indicates an NC apparatus for enabling a tape reader (described below) to read NC data from the paper tape 101, decode the NC data read from the paper tape 101 to send out the data (e.g., if the data are the M, S and T function commands), to a machine or to output the same, or if they are moving commands Zc, to a pulse distributor at a later stage. The NC apparatus 102 comprises a processor 102a for executing arithmetic processings in accordance with a control program; a program memory 102b for storing a predetermined control program; a data memory 102c for storing data; an operator's panel 102d for effecting control operations; a tape reader/puncher 102e; a display 102f; an input/output port 102g; a present position counter 102h; and an address/data bus 102j connecting them.
Indicated at numeral 103 is a pulse distributor which executes a well-known pulse distribution arithmetic operation on the basis of the moving commands Zc, to generate distributed pulses Ps having a frequency dependent on a command speed. A well-known acceleration/deceleration circuit 104 accelerates the pulse speed of the distributed pulse train Ps linearly when this pulse train is generated, or decelerates the same linearly at the end of said pulse train to generate a pulse train Pi. A motor 105 drives an operating axis, and a pulse coder 106 generates one feedback pulse FP each time the motor 105 rotates through a predetermined interval. An error computing memory 107 which is constructed of a reversible counter, for example, stores the difference or error Er between the number of the input pulses Pi generated by the acceleration/deceleration circuit 104 and the number of the feedback pulses FP. Incidentally, that error computing memory is constructed, as shown, of an arithmetic circuit 107a for computing the difference between Pi and FP, and an error register 107b for storing the error Er. Specifically, the error computing memory 107 counts up the input pulses Pi each time they are generated, if the motor 105 is commanded to revolve forward so that it is revolving in accordance with the command, and counts down the content of the feedback pulses FP each time they are generated, thereby to store the error Er between the input pulse number and the feedback pulse number in the error register 107b. Numeral 108 indicates a digital-analog (DA) converter for generating an analog voltage proportional to the content of the error register 107b, and numeral 109 indicates a speed control circuit. Incidentally, the error computing memory 107 and converter 108 together form a motor position controller.
Next, the operations of the construction of the conventional example of FIG. 1 will be described in the following.
Prior to machining, first of all, the NC data of the paper tape 101 are read out by the tape reader/puncher 102e and are stored in the data memory 102c through the bus 102j. Next, when the start command is inputted through the bus 102j to the processor 102a by operating the operator's panel 102d, the processor 102a sequentially reads out and executes the machining control program of the program memory 102b. Specifically, the processor reads out not only the NC data of the data memory 102c but also necessary parameters (such as NC parameters, feed speeds or machining voltages) to prepare an X-axis moving command Xc and a Y-axis moving command Yc for moving the moving part of the machine in directions X and Y of a table (not shown) and to send them through an input/output port (not shown) to a table drive unit, thereby to position the table. Incidentally, although not shown in FIG. 1, the constructions existing on the route from the input/output port 102g to the servomotor 105 are also provided for the X and Y axes. Likewise, the processor 102a prepares the Z-axis moving command Zc and sends out the M, S and T function commands to the machine through the input/output port 102g. The moving command Zc thus sent out is outputted through the bus 102j to the input/output port 102g. When the moving command is given from the input/output port 102g to the pulse distributor 103, this pulse distributor 103 executes the pulse distributing arithmetic on the basis of the moving command Zc and outputs the distributed pulses Ps. The acceleration/deceleration circuit 104 receives those distributed pulses Ps and accelerates or decelerates them to input the command pulse train Pi to the error computing memory 107. As a result, the content of the error register 107b leaves its zero state, and a voltage is outputted from the DA converter 108 so that the motor 105 is driven by the speed control circuit 109 to drive the operating axes. If the motor 105 rotates through a predetermined interval (e.g., one revolution), the feedback pulses FP are generated from the pulse coder 106 and inputted to the error computing memory 107, so that the error register 107b stores the error Er between the number of the command pulses Pi and the number of the feedback pulses FP. From then on, moreover, the motor 105 is servo-controlled to drop the error Er to zero so that the operating axes are driven to target positions.
Thus, in the servo-positioning operation, the present position is specified by the counter 102h by making use of the feedback pulses FP from the pulse coder 106, and is used for the position control. This pulse coder 106 has such a high resolving accuracy as to conduct highly accurate position control, so that it is superior as a position controlling detector to other detectors such as resolvers.
Since the pulse coder 106 does not have an absolute position detecting function, however, it is necessary to conduct returns to a zero point when the absolute positions of the operating axes are lost (for example, when the servo-system is malfunctioning or when a power supply circuit is turned off. Since returns to the zero point accordingly complicate the control and take a longer time period, there has been desired a system which is capable of conducting absolute position detections without any zero point return.
For this desired system, an absolute encoder and a resolver are known as the position detector capable of detecting absolute position. The absolute encoder outputs the absolute position corresponding to the rotational angle of the operating axis. As shown in FIG. 2, on the other hand, the resolver is composed of: a rotor 202a; a rotor winding 202b; two stator windings 202c and 202d arranged with a phase difference of 90 degrees; and carrier generators 202e and 203f for generating carriers of sin .omega.t and cos .omega.t, respectively. Now, if it is assumed that the rotor 202a is in a position of an angle .theta., a voltage 3, as expressed by the following equation, is outputted from the rotor winding 202b: EQU e=sin (.omega.t+.theta.) (1).
The relationship between the carrier sin .omega.t and the output e of the resolver 202 is shown as in FIG. 3, so that the absolute position can be detected if phase differences .theta..sub.1 to .theta..sub.n from the carrier sin .omega.t are determined.
Even if such position detector as can detect the absolute position is used in the servo-system under consideration, however, the full stroke of the moving part to have its position detected is generally achieved by n (e.g., 100) number of revolutions of the motor. Therefore, the resolution is one nth (i.e., 1/n) for one motor revolution, so that a sufficient positional accuracy cannot be attained. There is another problem in that, unless the high resolution of the pulse coder is accompanied by the detecting accuracy of the absolute position, it is not possible to improve the accuracy in the positional control. The servosystem also has a defect in that the detection of the respective absolute positions of a plurality of operating axes requires detecting circuits for the respective axes, so that its production cost is raised.